In [107]:
import json
import pandas as pd
from matplotlib import pylab as plt
.загружаем файлы .json
In [57]:
path = 'Sessions_Page.json'
path2 = 'Goal1CompletionLocation_Goal1Completions.json'
with open(path, 'r') as f:
sessions_page = json.loads(f.read())
with open(path2, 'r') as f:
goals_page = json.loads(f.read())
Смотрим, где именно в файле интересующие нас данные
In [8]:
type (sessions_page)
sessions_page.keys()
sessions_page['reports'][0].keys()
sessions_page['reports'][0]['data']['rows']
Считываем нужные нам данные как датафреймы
In [58]:
sessions_df = pd.DataFrame(sessions_page['reports'][0]['data']['rows'])
goals_df = pd.DataFrame(goals_page['reports'][0]['data']['rows'])
Создаем в датафреймах отдельные столбцы с данными в удобных нам форматах.
In [59]:
x=[]
for i in sessions_df.dimensions:
x.append(str(i[0]))
sessions_df.insert(2, 'name', x)
x=[]
for i in goals_df.dimensions:
x.append(str(i[0]))
goals_df.insert(2, 'name', x)
In [60]:
x=[]
for i in sessions_df.metrics:
x.append(float(i[0]['values'][0]))
sessions_df.insert(3, 'sessions', x)
x=[]
for i in goals_df.metrics:
x.append(float(i[0]['values'][0]))
goals_df.insert(3, 'goals', x)
Создаем столбцы в датафрейме с "Goal1Complitations", где будем хранить количество сессий и конверсию
In [62]:
goals_df.insert(4, 'sessions', 0)
goals_df.insert(5, 'convers_rate', 0)
Переносим из таблицы сессий количество сессий и считаем конверсию для каждой страницы, которая есть в "Goal1Complitations"
In [189]:
for i in range(7):
goals_df.sessions[i] = sum(sessions_df.sessions[sessions_df.name==goals_df.name[i]])
goals_df.convers_rate = goals_df.goals/goals_df.sessions*100
Обнулим конверсию для тех страниц по которым не було сессий. В даннос случае это страница "(entrance)"
In [191]:
goals_df.convers_rate[goals_df.sessions==0] = 0
In [197]:
goals_df.ix[range(1,7),[2,5]]
Out[197]:
Строим график
In [192]:
goals_df.ix[range(1,7),[2,5]].plot(kind="bar", legend=False)
plt.xticks([0, 1, 2, 3, 4, 5], goals_df.name, rotation="vertical")
plt.show()
Выводим результат
In [195]:
name = goals_df.ix[goals_df.convers_rate==max(goals_df.convers_rate),2]
print 'The best converting page on your site is "',str(name)[5:len(name)-28], '" with conversion rate', max(goals_df.convers_rate),'%'